<?php
namespace App\Models\Auth;

use App\Models\Model;

class TokenModel extends Model
{

    const TABLENAME = 'hs_auth_token';

    /**
     * 用户类型（老师）
     */
    const USER_TYPE_TEACHER = 1;

    /**
     * 用户类型（家长）
     */
    const USER_TYPE_PARENT = 2;

    /**
     * 用户类型（学生）
     */
    const USER_TYPE_STUDENT = 3;

    public static function getUserTypeList()
    {
        return [
            self::USER_TYPE_TEACHER,
            self::USER_TYPE_PARENT,
            self::USER_TYPE_STUDENT
        ];
    }

    /**
     * 查询一条数据
     *
     * @param string $token            
     * @param array $fields            
     * @return \Illuminate\Support\Collection
     */
    public static function findByToken($token, array $fields = [])
    {
        $query = self::dbTable();
        if (count($fields)) {
            $query->select($fields);
        }
        return $query->where('token', $token)->get();
    }

    /**
     * 创建一条数据
     *
     * @param array $data            
     * @return false | id
     */
    public static function create(array $data = [])
    {
        $data['created'] = $data['updated'] = time();
        
        // 插入数据并获取ID
        return self::dbTable()->insertGetId($data);
    }

    /**
     * 删除一条数据（token）
     *
     * @param string $token            
     * @return false | 1 | 0（删除条数，0未删除）
     */
    public static function destroyByToken($token)
    {
        return self::dbTable()->where('token', $token)->delete();
    }

    /**
     * 删除一条数据（用户ID，用户类型）
     *
     * @param int $userId            
     * @param int $userType            
     * @return false | 1 | 0（删除条数，0未删除）
     */
    public static function destroyByUser($userId, $userType)
    {
        return self::dbTable()->where('user_id', $userId)
            ->where('user_type', $userType)
            ->delete();
    }
}
